package theeg.DependencyAnalysis.Core.DataModel;

import java.util.Map;
import java.util.Set;

public interface DependencyModel
{
    public Map<ModuleDescriptor, Set<DependencyDescriptor>> getDependenciesPerModule();

    public Map<SubmoduleDescriptor, Set<DependencyDescriptor>> getDependenciesPerSubmodule();

    public Map<TypeDescriptor, Set<DependencyDescriptor>> getDependenciesPerType();

    public Map<MemberDescriptor, Set<DependencyDescriptor>> getDependenciesPerMember();

    public Map<ModuleDescriptor, Set<DependencyDescriptor>> getDependenciesPerModuleOut();

    public Map<SubmoduleDescriptor, Set<DependencyDescriptor>> getDependenciesPerSubmoduleOut();

    public Map<TypeDescriptor, Set<DependencyDescriptor>> getDependenciesPerTypeOut();

    public Map<MemberDescriptor, Set<DependencyDescriptor>> getDependenciesPerMemberOut();

    public InstructionCache getInstructionCache();

    public ProjectDescriptor getProject();
}
